/**
 * 请求参数处理工具
 * @author Wu.Liang
 * @date 2025-01-21
 * @description 处理移动端请求参数，过滤空值参数
 */

/**
 * 过滤空值参数
 * 移除对象中值为空字符串、null、undefined的参数
 * @param {Object} params 原始参数对象
 * @returns {Object} 过滤后的参数对象
 */
export function filterEmptyParams(params) {
  const filtered = {}
  
  for (const [key, value] of Object.entries(params)) {
    // 保留有值的参数
    if (value !== null && value !== undefined && value !== '') {
      filtered[key] = value
    }
  }
  
  return filtered
}

/**
 * 处理查询参数
 * 专门用于处理GET请求的查询参数
 * @param {Object} params 查询参数对象
 * @returns {Object} 过滤后的查询参数
 */
export function processQueryParams(params) {
  return filterEmptyParams(params)
}

/**
 * 处理表单参数
 * 专门用于处理POST/PUT请求的表单参数
 * @param {Object} params 表单参数对象
 * @returns {Object} 过滤后的表单参数
 */
export function processFormParams(params) {
  return filterEmptyParams(params)
}

/**
 * 构建URL查询字符串
 * 将参数对象转换为URL查询字符串，自动过滤空值
 * @param {Object} params 参数对象
 * @returns {string} URL查询字符串（不包含问号）
 */
export function buildQueryString(params) {
  const filtered = filterEmptyParams(params)
  const searchParams = new URLSearchParams()
  
  for (const [key, value] of Object.entries(filtered)) {
    if (Array.isArray(value)) {
      // 处理数组参数
      value.forEach(item => {
        if (item !== null && item !== undefined && item !== '') {
          searchParams.append(key, String(item))
        }
      })
    } else {
      searchParams.append(key, String(value))
    }
  }
  
  return searchParams.toString()
}

/**
 * 检查参数是否为空
 * @param {*} value 参数值
 * @returns {boolean} 是否为空
 */
export function isEmptyParam(value) {
  return value === null || value === undefined || value === ''
} 